iT邦幫忙

low-latency c++相關文章
共有 21 則文章
鐵人賽 Software Development DAY 21

技術 [Day 21] 進度存檔 | Low-Latency 中繼城冒險日誌

終於攻克 High-Performance Concurrency 這個大章節了!雖然這星期過得格外忙碌,但在持續寫作的過程中逐漸體會到學習的樂趣,進度也不再只...

鐵人賽 Software Development DAY 19

技術 [Day 19] High-Performance Concurrency: Thread Pinning II

Thread pinning 並不只是「把 thread 綁到某顆 CPU」這麼簡單,其核心概念可以濃縮成三句話: CPU affinity 限制 threa...

鐵人賽 Software Development DAY 20

技術 [Day 20] High-Performance Concurrency: Linux CPU Scheduling

前兩篇文篇討論了 thread pinning 的基本原理:透過 CPU affinity 限制 Thread 的執行範圍,降低 CPU migration 與...

鐵人賽 Software Development DAY 18

技術 [Day 18] High-Performance Concurrency: Thread Pinning I

在一般應用程式中,thread 要在哪一顆 CPU 上執行,不會是開發者需要操心的問題。作業系統的 scheduler 會根據 CPU 負載、Thread pr...

鐵人賽 Software Development DAY 17

技術 [Day 17] High-Performance Concurrency: Lock-Free Programming II

Lock-free 並非完全不使用 lock 的技巧,而是在高競爭情況下避免傳統 mutex 帶來的阻塞成本。昨天已提到 Lock-free programmi...

鐵人賽 Software Development DAY 16

技術 [Day 16] High-Performance Concurrency: Lock-Free Programming I

在 Low-Latency C++ 的設計中,最大的困難並非只有程式速度的提升,而是在高併發及高負載下仍然維持可預期且穩定的延遲。對金融交易、即時行情、遊戲引擎...

鐵人賽 Software Development DAY 15

技術 [Day 15] High-Performance Concurrency: Memory Models & Ordering

在 False Sharing Prevention 中有提到其與 std::atomic 之間的關係。而在高效能並行程式設計中,真正困難的不只是熟悉 atom...

鐵人賽 Software Development DAY 14

技術 [Day 14] High-Performance Concurrency: False Sharing Prevention

在現代電腦系統中,CPU 的運算速度不斷提升,multi-core 處理器也已成為主流。為了充分利用硬體資源,軟體通常會採用 concurrency 或 par...

鐵人賽 Software Development DAY 12

技術 [Day 12] Hardware-Aware Memory & CPU Architecture: Microarchitecture Tuning

從 Machine Code 單元 開始,我們看到 compiler 如何把 C++ 轉成 CPU 真正執行的 instruction;透過 Data-Orie...

鐵人賽 Software Development DAY 13

技術 [Day 13] 進度存檔 | Low-Latency 練功區冒險日誌

雖然心裡早就有所準備,但跟硬體有關的內容實在是難度太高,學到後來也逐漸感受到精疲力竭。幸好依舊努力不曾放棄,希望這場冒險終將有所回報。 終於完成兩大 Low-L...

鐵人賽 Software Development DAY 11

技術 [Day 11] Hardware-Aware Memory & CPU Architecture: Data Ownership

在 low-latency C++ 中,效能瓶頸往往不在於程式做了多少計算,而在於 CPU 為了取得資料究竟付出了多少成本。當多個 thread 同時存取資料時...

鐵人賽 Software Development DAY 10

技術 [Day 10] Hardware-Aware Memory & CPU Architecture: Data-Oriented Design II

在真正追求 nanosecond-level latency 的 C++ 系統中,資料如何排列與存取就是效能的一大考量。上篇文章已經提到 Array of St...

鐵人賽 Software Development DAY 9

技術 [Day 9] Hardware-Aware Memory & CPU Architecture: Data-Oriented Design I

在 Low-Latency C++ 系統中,效能瓶頸往往不在 CPU arithmetic,而是在 memory access。當 CPU 執行速度遠快於主記憶...

鐵人賽 Software Development DAY 8

技術 [Day 8] Hardware-Aware Memory & CPU Architecture: Machine Code II

同樣一段 C++ code,即使 algorithmic complexity 完全相同,產生的 machine code 也可能因為 branch patte...

鐵人賽 Software Development DAY 7

技術 [Day 7] Hardware-Aware Memory & CPU Architecture: Machine Code I

在一般的 C++ 開發中,我們往往習慣從 source code 的角度思考問題: 這個 class 的 interface 是否設計得好? 這個 abstr...

鐵人賽 Software Development DAY 5

技術 [Day 5] Advanced Modern C++ Foundations: Abstraction II

上一篇文的低延遲系統的大哉問中,提到了幾個在 compile time 常見且實用的語法。接下來我們將進一步拆解這些語法的運作方式,了解它們各自適合的使用情境,...

鐵人賽 Software Development DAY 6

技術 [Day 6] 進度存檔 | Low-Latency 新手村冒險日誌

終於講完第一個小章節了!雖然有不少內容和《Effective C++》相關,但在重新複習的過程中依舊學到了新的知識點,也算是重新認識了一些以前忽略的細節。所以今...

鐵人賽 Software Development DAY 4

技術 [Day 4] Advanced Modern C++ Foundations: Abstraction I

上一篇我們以 STL 為基點,探討 memory layout、cache locality、allocation 及 tail latency,並拆解 Low...

鐵人賽 Software Development DAY 3

技術 [Day 3] Advanced Modern C++ Foundations: STL

在學習 C++ STL 時不能只知道 container 如何使用,更要理解 abstraction 背後的 runtime cost。例如 vector、li...

鐵人賽 Software Development DAY 2

技術 [Day 2] Advanced Modern C++ Foundations: RAII

去年曾經讀過《Effective C++》,當時對 Resource Acquisition Is Initialization (RAII) 的理解較為片面,...

鐵人賽 Software Development DAY 1

技術 [Day 1] 前言 && 大綱

拖延了一個月,終於把這次的參賽主題拍板定案! 明明本人是個連 C++ 都還不夠熟練的大菜鳥,卻總是喜歡挑戰一些看起來生澀難懂的主題,把自己搞得緊張兮兮還不敢斷更...